您好,欢迎来到达州工业云! 平台首页 企业驾驶舱 帮助中心 企业登录 企业注册

HI,欢迎使用达州工业云平台!

账号必须大于2位

创新资源平台
服务平台首页>专利库>专利详情

一种访问数据库的方法和装置

  • 申请号:CN201010617029.6 申请公布号: CN102567399B
  • 申请日: 2010-12-31 申请公布日: 2014-06-11
  • 申请(专利权)人: 专利代理机构: 北京市隆安律师事务所
  • 分类号:G06F17/30

专利介绍

本发明公开了一种访问数据库的方法和装置,该方法包括:业务逻辑层根据业务方法的注释判断该业务方法需要进行单库操作还是需要进行跨库操作,并根据判断结果将该业务方法定位到对应的一个或多个数据库;数据库访问层将所述业务方法的操作定位到该业务方法对应的一个或多个数据库的表中。如果所述业务方法对应一个数据库时,由单库事务管理器进行单库操作;如果所述业务方法对应多个数据库时,由跨库事务管理器进行跨库操作。本发明的技术方案能提高业务方法访问数据库的效率。
1.一种访问数据库的方法,其特征在于,该方法包括:业务逻辑层包括业务逻辑方法的封装集合,其中设定分库分表方法,该分库分表方法将业务方法划分成需要进行单库操作的业务方法或者是需要进行跨库操作的业务方法;业务逻辑层通过调用分库分表方法给业务方法添加事务注释,根据业务方法的注释判断该业务方法需要进行单库操作还是需要进行跨库操作,并根据判断结果将该业务方法定位到对应的一个或多个数据库;所述分库分表方法将分库方法和分表方法封装在一起;数据库访问层根据业务方法中的分表逻辑,通过调用分库分表方法,将所述业务方法的操作定位到该业务方法对应的一个或多个数据库的表中;如果所述业务方法对应一个数据库时,由单库事务管理器进行单库操作;如果所述业务方法对应多个数据库时,由跨库事务管理器进行跨库操作。
2.根据权利要求1所述的方法,其特征在于,业务逻辑层根据判断结果将该业务方法定位到对应的一个或多个数据库包括:业务逻辑层根据业务方法的方法名将该业务方法定位到所对应数据库的读数据库或写数据库。
3.根据权利要求1所述的方法,其特征在于,所述根据判断结果将该业务方法定位到对应的一个或多个数据库包括:业务逻辑层通过调用数据库访问层的方法,将所述业务方法定位到对应的一个或多个数据库。
4.一种访问数据库的装置,其特征在于,该装置包括:业务逻辑层模块和数据库访问层模块,业务逻辑层模块还包括单库事务管理器和跨库事务管理器;其中:业务逻辑层模块,包括业务逻辑方法的封装集合,其中设定分库分表方法,该分库分表方法将业务方法划分成需要进行单库操作的业务方法或者是需要进行跨库操作的业务方法;用于通过调用分库分表方法给业务方法添加事务注释,根据业务方法的注释判断该业务方法需要进行单库操作还是需要进行跨库操作,并根据判断结果将该业务方法定位到对应的一个或多个数据库;再将定位到的对应的一个或多个数据库的标识发送给数据库访问模块;所述分库分表方法为将分库方法和分表方法封装在一起;数据库访问层模块,根据业务方法中的分表逻辑,通过调用分库分表方法,根据业务逻辑层模块发送的数据库的标识,将所述业务方法的操作定位到该业务方法对应的一个或多个数据库的表中;如果所述业务方法对应一个数据库时,由单库事务管理器进行单库操作;如果所述业务方法对应多个数据库时,由跨库事务管理器进行跨库操作。
5.根据权利要求4所述的装置,其特征在于,业务逻辑层模块通过调用数据库访问层模块中的方法,将所述业务方法定位到对应的一个或多个数据库。
6.根据权利要求4所述的装置,其特征在于,业务逻辑层模块根据业务方法的方法名将所述业务方法定位到所对应数据库的读数据库或写数据库。技术领域
本发明涉及数据业务技术领域,特别是一种访问数据库的方法和装置。
背景技术
大型网站都有复杂的应用,这些应用必须使用数据库,那么在面对大量访问的时候,数据库的瓶颈很快就会显现出来,这时一台数据库将很快无法满足应用,于是我们需要使用数据库集群或者库表散列,按照某种规则或者业务逻辑对数据库进行切分,将数据分布在多个数据库中或者多个表中。图1是现有技术中数据结构图。如图1所示,根据具体业务将数据库分为三个,每个数据库中又可能将一个表里的数据分成n个相同结构的表,这时我们面临的数据源可能多达数十甚至上百个,如何快速有效的访问这些数据源,并将相应的数据正确地定位到数据源就成为一个必须解决的问题。在现有技术完全将分库分表封装在数据库访问层,虽然得到了使用上的方便,但是造成数据库访问层的编写变得非常复杂,而且全部使用jta作为全局事务管理器对业务方法进行操作,造成事务处理上的效率相对较低。
发明内容
本发明提供了一种访问数据库的方法,该方法能够提高业务方法访问数据库的效率。本发明还提供了一种访问数据的装置,该装置能够提高业务方法访问数据库的效率。为达到上述目的,本发明的技术方案是这样实现的:本发明提供了一种访问数据库的方法,该方法包括:业务逻辑层根据业务方法的注释判断该业务方法需要进行单库操作还是需要进行跨库操作,并根据判断结果将该业务方法定位到对应的一个或多个数据库;数据库访问层将所述业务方法的操作定位到该业务方法对应的一个或多个数据库的表中。如果所述业务方法对应一个数据库时,由单库事务管理器进行单库操作;如果所述业务方法对应多个数据库时,由跨库事务管理器进行跨库操作。本发明还提供了一种访问数据库的装置,该装置包括:业务逻辑层模块和数据库访问模块,业务逻辑层模块还包括单库事务管理器和跨库事务管理器;其中:业务逻辑层模块:用于根据业务方法的注释判断该业务方法需要进行单库操作还是需要进行跨库操作,并根据判断结果将该业务方法定位到对应的一个或多个数据库;再将定位到的对应的一个或多个数据库的标识发送给数据库访问模块;数据库访问模块:根据业务逻辑层模块发送的数据库的标识,将所述业务方法的操作定位到该业务方法对应的一个或多个数据库的表中;如果所述业务方法对应一个数据库时,由单库事务管理器进行单库操作;如果所述业务方法对应多个数据库时,由跨库事务管理器进行跨库操作。由上述可知,本发明这种把业务方法定位到数据库的操作封装到业务逻辑层,再将业务方法定位到数据库的表中的操作封装在数据库访问层,并使用不同的事务管理器对单库事务和跨库事务进行操作。本发明的计算方案提高了业务方法访问数据库的效率。
附图说明
图1是现有技术中典型的数据库结构示意图;图2是本发明的一种访问数据库的方法的流程图;图3是本发明中将业务方法定位到数据库的流程图;图4是本发明中一种访问数据库的实施例的具体流程图;图5是本发明中一种访问数据库的装置的结构示意图。
具体实施方式
图2是本发明的一种访问数据库的方法的流程图。如图2所示,步骤201,业务逻辑层根据业务方法的注释判断该业务方法需要进行单库操作还是需要进行跨库操作,并根据判断结果将该业务方法定位到对应的一个或多个数据库;步骤202,数据库访问层将所述业务方法的操作定位到该业务方法对应的一个或多个数据库的表中;步骤203,如果所述业务方法对应一个数据库时,由单库事务管理器进行单库操作;如果所述业务方法对应多个数据库时,由跨库事务管理器进行跨库操作。为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。图3是本发明中将业务方法定位到数据库的流程图,如图3所示,业务逻辑层,根据业务方法的注释判断该业务方法需要进行单库操作还是需要进行跨库操作,并根据判断结果将该业务方法定位到对应的一个或多个数据库。业务逻辑层是处理核心业务逻辑的地方,是业务逻辑方法的封装集合。其中业务逻辑层通过调用分库分表方法给业务方法添加事务注释,并根据所添加的注释判断该业务方法需要进行单库操作还是需要进行跨库操作;根据业务方法的方法名将该业务方法定位到所对应数据库的读数据库或写数据库;通过调用数据库访问层中的方法将所述操作定位到对应的一个或多个数据库的对应表中。如果所述业务方法对应一个数据库时,由单库事务管理器进行单库操作;如果所述业务方法对应多个数据库时,由跨库事务管理器进行跨库操作。数据库访问层,将所述业务方法的操作定位到该业务方法对应的一个或多个数据库的表中。具体为数据库访问层根据业务方法中的分表逻辑,通过调用分库分表方法,将所述操作定位到对应的一个或多个数据库中的对应表中。业务逻辑层中设定分库分表方法,该分库分表方法将分库方法和分表方法封装在一起。在本发明的较佳实施例中,使用Spring和ibatis作为框架架构数据库。其中Spring的动态数据库能够实现多个数据库的灵活切换。业务逻辑层在接收到业务请求时,调用所述业务的业务方法,根据所述业务方法的注释判断该业务方法需要进行单库操作还是需要进行跨库操作,并根据判断结果将该业务方法定位到对应的一个或多个数据库。如果一次业务请求过程中只涉及对一个数据库中的操作,则使用单库事务管理器对所述业务方法进行操作;如果一次业务请求过程中涉及对两个或者两个以上的数据库的操作,并且在数据库访问过程中需要对一个以上的数据库进行访问写数据库的操作,则使用跨库事务管理器对所述业务方法进行操作,在上述实施例中使用jta作为跨库事务管理器,保证跨库事务操作的完整性;使用单库事务管理器提高对单库事务操作的效率。图4是本发明中一个访问数据库的实施例的具体流程图。如图4所示,步骤401,业务逻辑层接收业务处理请求。步骤402,业务逻辑层接收到业务处理请求后,调用处理所述业务的业务方法,并根据所述业务方法的事务注释判断所述业务方法需要进行单库操作还是需要进行跨库操作;并调用数据库访问层的方法将所述业务方法定位到指定的数据库。并根据所述方法的方法名将判定当前业务方法需要访问读数据库还是写数据库。如果当前业务方法需要访问写数据库则运行步骤403,如果当前业务方法需要访问读数据库则运行步骤404步骤403,数据库访问层获取当前业务方法需要对那个数据库进行操作,根据当前业务方法中的分表逻辑,调用业务逻辑层的分库分表方法,根据分库分表方法中的分表规则计算当前业务方法对应的分表信息,将当前业务方法的操作定位到所需要访问的数据的表中,对相应的表进行操作。步骤404,定位到业务方法需要访问数据库的读数据库,读取相应的信息。图5是本发明中一种访问数据库的装置的结构示意图。如图5所示,本发明还提供了一种访问数据库的装置,该装置包括业务逻辑层模块和数据库访问层模块,业务逻辑层模块501还包括单库事务管理器和跨库事务管理器;其中:业务逻辑层模块501:用于根据业务方法的注释判断该业务方法需要进行单库操作还是需要进行跨库操作,并根据判断结果将该业务方法定位到对应的一个或多个数据库;再将定位到的对应的一个或多个数据库的标识发送给数据库访问模块502。数据库访问层模块502:根据业务逻辑层模块501发送的数据库标识,将所述业务方法的操作定位到该业务方法对应的一个或多个数据库的表中。如果所述业务方法对应一个数据库时,由单库事务管理器进行单库操作;如果所述业务方法对应多个数据库时,由跨库事务管理器进行跨库操作。在上述装置中,业务逻辑层模块501中包括分库分表方法,该分库分表方法将业务方法划分成需要进行单库操作的业务方法或者是需要进行跨库操作的业务方法;业务逻辑层模块501通过调用分库分表方法给业务方法添加事务注释,并根据所添加的注释判断该业务方法需要进行单库操作还是需要进行跨库操作。在上述装置中,业务逻辑层模块501通过调用数据库访问层模块中的方法,将所述业务方法定位到对应的一个或多个数据库。在上述装置中,数据库访问层模块502,根据业务方法中的分表逻辑,通过调用分库分表方法,将所述操作定位到对应的一个或多个数据库中的对应表中。在上述装置中,业务逻辑层模块501根据业务方法的方法名将所述业务方法定位到所对应数据库的读数据库或写数据库。综上所述,本发明通过在业务逻辑层中将业务方法定位到需要访问的数据库;在数据库访问层中,将业务方法的操作定位到对应数据库的表中,改变了传统技术中的完全将定位到数据库操作和定位数据库中的表的操作封装在数据库访问层的方式所造成数据库访问层代码编写复杂的问题,提高了数据访问对象的复用率。本发明的方法提高了业务方法访问数据库的效率。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。